//我们将路由对应的处理函数抽离出来
   //导入数据库操作模块
const db = require('../db/index');
const bcrypt = require('bcryptjs'); 
exports.getUserInfo = (req,res)=>{
   //定义sql语句查询用户信息 不能把密码查出来 所以必须一个一个查
   const sql = `select id, username, nickname, email, user_pic from ev_user where id=?`
   //这里user属性 是express-jwt中间件解析后进行挂载的
   db.query(sql,req.user.id,(err,results)=>{
       //执行语句失败
       if(err) return res.cc(err)
       //没查到内容
       if(results.length !== 1) return res.cc('获取用户信息失败')
       //将获取的results对象返回给客户端
       res.send({
           status:0,
           message:"获取用户信息成功",
           data:results[0]
       })
   })
      
}
exports.updateUserInfo = (req,res)=>{
    //定义sql语句用于更新数据库
    const sql = 'update ev_user set ? where id = ?'
    //执行sql语句
    db.query(sql,[req.body,req.body.id],(err,results)=>{
        if(err) return res.cc(err)
        //如果修改的行数不为一 那么就是修改失败
        if(results.affectedRows !== 1) return res.cc('修改用户基本信息失败')
        res.cc("修改用户信息成功",0);

    })
}
//定义修改密码的处理函数
exports.updatePwd = (req,res)=>{
    //根据id查询 分两步 先将新旧密码进行比较  然后再更新数据库密码
    const sql = `select * from ev_user where id = ?`
    db.query(sql,req.user.id,(err,results)=>{
        if(err) return res.cc(err)
        if(results.length !== 1) return res.cc("用户不存在")
        //判断用户提交的密码是否跟数据库相等
        const compareResults = bcrypt.compareSync(req.body.oldPwd,results[0].password);
        if(!compareResults) return res.cc("密码错误")
        
        //更新密码
        const sql = `update ev_user set password = ? where id = ?`
        //将新密码进行加密
        const newPwd = bcrypt.hashSync(req.body.newPwd,10)
        db.query(sql,[newPwd,req.user.id],(err,results)=>{
            if(err) return res.cc(err)
            if(results.affectedRows !== 1){
                res.cc("更新密码失败")
            }
            res.cc("更新密码成功")
        })
       
    })
    
}
//定义更新头像的处理函数
exports.updateAvater = (req,res)=>{
    //定义sql语句
    const sql = `update ev_user set user_pic=? where id = ?`
    db.query(sql,[req.body.avater,req.user.id],(err,results)=>{
        if(err) return res.cc(err)
        if(results.affectedRows !== 1) return res.cc("更新头像失败")
        res.cc("更新头像成功",0)
    })
}